home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / XAMPP 1.4.14 / xampp-win32-1.4.14-installer.exe / xampp / phpMyAdmin / export.php < prev    next >
PHP Script  |  2005-03-06  |  22KB  |  595 lines

  1. <?php
  2. /* $Id: export.php,v 2.22 2005/03/06 21:10:53 nijel Exp $ */
  3. // vim: expandtab sw=4 ts=4 sts=4:
  4.  
  5. /**
  6.  * Get the variables sent or posted to this script and a core script
  7.  */
  8. require_once('./libraries/grab_globals.lib.php');
  9. require_once('./libraries/common.lib.php');
  10. require_once('./libraries/zip.lib.php');
  11.  
  12. PMA_checkParameters(array('what'));
  13.  
  14. // What type of export are we doing?
  15. if ($what == 'excel') {
  16.     $type = 'csv';
  17. } else {
  18.     $type = $what;
  19. }
  20.  
  21. // Get the functions specific to the export type
  22. require('./libraries/export/' . PMA_securePath($type) . '.php');
  23.  
  24. // Generate error url
  25. if ($export_type == 'server') {
  26.     $err_url = 'server_export.php?' . PMA_generate_common_url();
  27. } elseif ($export_type == 'database') {
  28.     $err_url = 'db_details_export.php?' . PMA_generate_common_url($db);
  29. } else {
  30.     $err_url = 'tbl_properties_export.php?' . PMA_generate_common_url($db, $table);
  31. }
  32.  
  33. /**
  34.  * Increase time limit for script execution and initializes some variables
  35.  */
  36. @set_time_limit($cfg['ExecTimeLimit']);
  37.  
  38. // Start with empty buffer
  39. $dump_buffer = '';
  40. $dump_buffer_len = 0;
  41.  
  42. // We send fake headers to avoid browser timeout when buffering
  43. $time_start = time();
  44.  
  45.  
  46. /**
  47.  * Output handler for all exports, if needed buffering, it stores data into
  48.  * $dump_buffer, otherwise it prints thems out.
  49.  *
  50.  * @param   string  the insert statement
  51.  *
  52.  * @return  bool    Whether output suceeded
  53.  */
  54. function PMA_exportOutputHandler($line)
  55. {
  56.     global $time_start, $dump_buffer, $dump_buffer_len, $save_filename;
  57.  
  58.     // Kanji encoding convert feature
  59.     if ($GLOBALS['output_kanji_conversion']) {
  60.         $line = PMA_kanji_str_conv($line, $GLOBALS['knjenc'], isset($GLOBALS['xkana']) ? $GLOBALS['xkana'] : '');
  61.     }
  62.     // If we have to buffer data, we will perform everything at once at the end
  63.     if ($GLOBALS['buffer_needed']) {
  64.  
  65.         $dump_buffer .= $line;
  66.         if ($GLOBALS['onfly_compression']) {
  67.  
  68.             $dump_buffer_len += strlen($line);
  69.  
  70.             if ($dump_buffer_len > $GLOBALS['memory_limit']) {
  71.                 if ($GLOBALS['output_charset_conversion']) {
  72.                     $dump_buffer = PMA_convert_string($GLOBALS['charset'], $GLOBALS['charset_of_file'], $dump_buffer);
  73.                 }
  74.                 // as bzipped
  75.                 if ($GLOBALS['compression'] == 'bzip'  && @function_exists('bzcompress')) {
  76.                     $dump_buffer = bzcompress($dump_buffer);
  77.                 }
  78.                 // as a gzipped file
  79.                 else if ($GLOBALS['compression'] == 'gzip' && @function_exists('gzencode')) {
  80.                     // without the optional parameter level because it bug
  81.                     $dump_buffer = gzencode($dump_buffer);
  82.                 }
  83.                 if ($GLOBALS['save_on_server']) {
  84.                     $write_result = @fwrite($GLOBALS['file_handle'], $dump_buffer);
  85.                     if (!$write_result || ($write_result != strlen($dump_buffer))) {
  86.                         $GLOBALS['message'] = sprintf($GLOBALS['strNoSpace'], htmlspecialchars($save_filename));
  87.                         return FALSE;
  88.                     }
  89.                 } else {
  90.                     echo $dump_buffer;
  91.                 }
  92.                 $dump_buffer = '';
  93.                 $dump_buffer_len = 0;
  94.             }
  95.         } else {
  96.             $time_now = time();
  97.             if ($time_start >= $time_now + 30) {
  98.                 $time_start = $time_now;
  99.                 header('X-pmaPing: Pong');
  100.             } // end if
  101.         }
  102.     } else {
  103.         if ($GLOBALS['asfile']) {
  104.             if ($GLOBALS['save_on_server'] && strlen($line) > 0) {
  105.                 $write_result = @fwrite($GLOBALS['file_handle'], $line);
  106.                 if (!$write_result || ($write_result != strlen($line))) {
  107.                     $GLOBALS['message'] = sprintf($GLOBALS['strNoSpace'], htmlspecialchars($save_filename));
  108.                     return FALSE;
  109.                 }
  110.                 $time_now = time();
  111.                 if ($time_start >= $time_now + 30) {
  112.                     $time_start = $time_now;
  113.                     header('X-pmaPing: Pong');
  114.                 } // end if
  115.             } else {
  116.                 // We export as file - output normally
  117.                 if ($GLOBALS['output_charset_conversion']) {
  118.                     $line = PMA_convert_string($GLOBALS['charset'], $GLOBALS['charset_of_file'], $line);
  119.                 }
  120.                 echo $line;
  121.             }
  122.         } else {
  123.             // We export as html - replace special chars
  124.             echo htmlspecialchars($line);
  125.         }
  126.     }
  127.     return TRUE;
  128. } // end of the 'PMA_exportOutputHandler()' function
  129.  
  130. // Will we save dump on server?
  131. $save_on_server = isset($cfg['SaveDir']) && !empty($cfg['SaveDir']) && !empty($onserver);
  132.  
  133. // Ensure compressed formats are associated with the download feature
  134. if (empty($asfile)) {
  135.     if ($save_on_server) {
  136.         $asfile = TRUE;
  137.     } elseif (isset($compression) && ($compression == 'zip' | $compression == 'gzip' | $compression == 'bzip')) {
  138.         $asfile = TRUE;
  139.     } else {
  140.         $asfile = FALSE;
  141.     }
  142. } else {
  143.     $asfile = TRUE;
  144. }
  145.  
  146. // Defines the default <CR><LF> format. For SQL always use \n as MySQL wants this on all platforms.
  147. if ($what == 'sql') {
  148.     $crlf = "\n";
  149. } else {
  150.     $crlf = PMA_whichCrlf();
  151. }
  152.  
  153. $output_kanji_conversion = function_exists('PMA_kanji_str_conv') && $type != 'xls';
  154.  
  155. // Do we need to convert charset?
  156. $output_charset_conversion = $asfile &&
  157.     $cfg['AllowAnywhereRecoding'] && $allow_recoding
  158.     && isset($charset_of_file) && $charset_of_file != $charset
  159.     && $type != 'xls';
  160.  
  161. // Set whether we will need buffering
  162. $buffer_needed = isset($compression) && ($compression == 'zip' | $compression == 'gzip' | $compression == 'bzip');
  163.  
  164. // Use on fly compression?
  165. $onfly_compression = $GLOBALS['cfg']['CompressOnFly'] && isset($compression) && ($compression == 'gzip' | $compression == 'bzip');
  166. if ($onfly_compression) {
  167.     $memory_limit = trim(@ini_get('memory_limit'));
  168.     // 2 MB as default
  169.     if (empty($memory_limit)) $memory_limit = 2 * 1024 * 1024;
  170.  
  171.     if (strtolower(substr($memory_limit, -1)) == 'm') $memory_limit = (int)substr($memory_limit, 0, -1) * 1024 * 1024;
  172.     elseif (strtolower(substr($memory_limit, -1)) == 'k') $memory_limit = (int)substr($memory_limit, 0, -1) * 1024;
  173.     elseif (strtolower(substr($memory_limit, -1)) == 'g') $memory_limit = (int)substr($memory_limit, 0, -1) * 1024 * 1024 * 1024;
  174.     else $memory_limit = (int)$memory_limit;
  175.  
  176.     // Some of memory is needed for other thins and as treshold.
  177.     // Nijel: During export I had allocated (see memory_get_usage function)
  178.     //        approx 1.2MB so this comes from that.
  179.     if ($memory_limit > 1500000) $memory_limit -= 1500000;
  180.  
  181.     // Some memory is needed for compression, assume 1/3
  182.     $memory_limit *= 2/3;
  183. }
  184.  
  185. // Generate filename and mime type if needed
  186. if ($asfile) {
  187.     $pma_uri_parts = parse_url($cfg['PmaAbsoluteUri']);
  188.     if ($export_type == 'server') {
  189.         if (isset($remember_template)) {
  190.             setcookie('pma_server_filename_template', $filename_template , 0, $GLOBALS['cookie_path'], '' , $GLOBALS['is_https']);
  191.         }
  192.         $filename = str_replace('__SERVER__', $GLOBALS['cfg']['Server']['host'], strftime($filename_template));
  193.     } elseif ($export_type == 'database') {
  194.         if (isset($remember_template)) {
  195.             setcookie('pma_db_filename_template', $filename_template , 0, $GLOBALS['cookie_path'], '' , $GLOBALS['is_https']);
  196.         }
  197.         $filename = str_replace('__DB__', $db, str_replace('__SERVER__', $GLOBALS['cfg']['Server']['host'], strftime($filename_template)));
  198.     } else {
  199.         if (isset($remember_template)) {
  200.             setcookie('pma_table_filename_template', $filename_template , 0, $GLOBALS['cookie_path'], '' , $GLOBALS['is_https']);
  201.         }
  202.         $filename = str_replace('__TABLE__', $table, str_replace('__DB__', $db, str_replace('__SERVER__', $GLOBALS['cfg']['Server']['host'], strftime($filename_template))));
  203.     }
  204.  
  205.     // convert filename to iso-8859-1, it is safer
  206.     if (!(isset($cfg['AllowAnywhereRecoding']) && $cfg['AllowAnywhereRecoding'] && $allow_recoding)) {
  207.         $filename = PMA_convert_string($charset, 'iso-8859-1', $filename);
  208.     } else {
  209.         $filename = PMA_convert_string($convcharset, 'iso-8859-1', $filename);
  210.     }
  211.  
  212.     // Generate basic dump extension
  213.     if ($type == 'csv') {
  214.         $filename  .= '.csv';
  215.         $mime_type = 'text/x-comma-separated-values';
  216.     } else if ($type == 'htmlexcel') {
  217.         $filename  .= '.xls';
  218.         $mime_type = 'application/vnd.ms-excel';
  219.     } else if ($type == 'htmlword') {
  220.         $filename  .= '.doc';
  221.         $mime_type = 'application/vnd.ms-word';
  222.     } else if ($type == 'xls') {
  223.         $filename  .= '.xls';
  224.         $mime_type = 'application/vnd.ms-excel';
  225.     } else if ($type == 'xml') {
  226.         $filename  .= '.xml';
  227.         $mime_type = 'text/xml';
  228.     } else if ($type == 'latex') {
  229.         $filename  .= '.tex';
  230.         $mime_type = 'application/x-tex';
  231.     } else {
  232.         $filename  .= '.sql';
  233.         // text/x-sql is correct MIME type, however safari ignores further
  234.         // Content-Disposition header, so we must force it to download it this
  235.         // way...
  236.         $mime_type = PMA_USR_BROWSER_AGENT == 'SAFARI'
  237.                         ? 'application/octet-stream'
  238.                         : 'text/x-sql';
  239.     }
  240.  
  241.     // If dump is going to be compressed, set correct encoding or mime_type and add
  242.     // compression to extension
  243.     $content_encoding = '';
  244.     if (isset($compression) && $compression == 'bzip') {
  245.         $filename  .= '.bz2';
  246.         // browsers don't like this:
  247.         //$content_encoding = 'x-bzip2';
  248.         $mime_type = 'application/x-bzip2';
  249.     } else if (isset($compression) && $compression == 'gzip') {
  250.         $filename  .= '.gz';
  251.         // needed to avoid recompression by server modules like mod_gzip:
  252.         $content_encoding = 'x-gzip';
  253.         $mime_type = 'application/x-gzip';
  254.     } else if (isset($compression) && $compression == 'zip') {
  255.         $filename  .= '.zip';
  256.         $mime_type = 'application/zip';
  257.     }
  258. }
  259.  
  260. // Open file on server if needed
  261. if ($save_on_server) {
  262.     if (substr($cfg['SaveDir'], -1) != '/') {
  263.         $cfg['SaveDir'] .= '/';
  264.     }
  265.     $save_filename = $cfg['SaveDir'] . preg_replace('@[/\\\\]@','_',$filename);
  266.     unset($message);
  267.     if (file_exists($save_filename) && empty($onserverover)) {
  268.         $message = sprintf($strFileAlreadyExists, htmlspecialchars($save_filename));
  269.     } else {
  270.         if (is_file($save_filename) && !is_writable($save_filename)) {
  271.             $message = sprintf($strNoPermission, htmlspecialchars($save_filename));
  272.         } else {
  273.             if (!$file_handle = @fopen($save_filename, 'w')) {
  274.                 $message = sprintf($strNoPermission, htmlspecialchars($save_filename));
  275.             }
  276.         }
  277.     }
  278.     if (isset($message)) {
  279.         $js_to_run = 'functions.js';
  280.         require_once('./header.inc.php');
  281.         if ($export_type == 'server') {
  282.             $active_page = 'server_export.php';
  283.             require('./server_export.php');
  284.         } elseif ($export_type == 'database') {
  285.             $active_page = 'db_details_export.php';
  286.             require('./db_details_export.php');
  287.         } else {
  288.             $active_page = 'tbl_properties_export.php';
  289.             require('./tbl_properties_export.php');
  290.         }
  291.         exit();
  292.     }
  293. }
  294.  
  295. /**
  296.  * Send headers depending on whether the user chose to download a dump file
  297.  * or not
  298.  */
  299. if (!$save_on_server) {
  300.     if ($asfile ) {
  301.         // Download
  302.         if (!empty($content_encoding)) {
  303.             header('Content-Encoding: ' . $content_encoding);
  304.         }
  305.         header('Content-Type: ' . $mime_type);
  306.         header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
  307.         // lem9 & loic1: IE need specific headers
  308.         if (PMA_USR_BROWSER_AGENT == 'IE') {
  309.             header('Content-Disposition: inline; filename="' . $filename . '"');
  310.             header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  311.             header('Pragma: public');
  312.         } else {
  313.             header('Content-Disposition: attachment; filename="' . $filename . '"');
  314.             header('Pragma: no-cache');
  315.         }
  316.     } else {
  317.         // HTML
  318.         $backup_cfgServer = $cfg['Server'];
  319.         require_once('./header.inc.php');
  320.         $cfg['Server'] = $backup_cfgServer;
  321.         unset($backup_cfgServer);
  322.         echo "\n" . '<div align="' . $cell_align_left . '">' . "\n";
  323.         //echo '    <pre>' . "\n";
  324.         echo '    <form name="nofunction">' . "\n"
  325.            // remove auto-select for now: there is no way to select
  326.            // only a part of the text; anyway, it should obey
  327.            // $cfg['TextareaAutoSelect']
  328.            //. '        <textarea name="sqldump" cols="50" rows="30" onclick="this.select();" id="textSQLDUMP" wrap="OFF">' . "\n";
  329.            . '        <textarea name="sqldump" cols="50" rows="30" id="textSQLDUMP" wrap="OFF">' . "\n";
  330.     } // end download
  331. }
  332.  
  333. // Check if we have something to export
  334. if ($export_type == 'database') {
  335.     $tables     = PMA_DBI_get_tables($db);
  336.     $num_tables = count($tables);
  337.     if ($num_tables == 0) {
  338.         $message = $strNoTablesFound;
  339.         $js_to_run = 'functions.js';
  340.         require_once('./header.inc.php');
  341.         if ($export_type == 'server') {
  342.             $active_page = 'server_export.php';
  343.             require('./server_export.php');
  344.         } elseif ($export_type == 'database') {
  345.             $active_page = 'db_details_export.php';
  346.             require('./db_details_export.php');
  347.         } else {
  348.             $active_page = 'tbl_properties_export.php';
  349.             require('./tbl_properties_export.php');
  350.         }
  351.         exit();
  352.     }
  353. }
  354.  
  355. // Fake loop just to allow skip of remain of this code by break, I'd really
  356. // need exceptions here :-)
  357. do {
  358.  
  359. // Add possibly some comments to export
  360. if (!PMA_exportHeader()) break;
  361.  
  362. // Will we need relation & co. setup?
  363. $do_relation = isset($GLOBALS[$what . '_relation']);
  364. $do_comments = isset($GLOBALS[$what . '_comments']);
  365. $do_mime     = isset($GLOBALS[$what . '_mime']);
  366. if ($do_relation || $do_comments || $do_mime) {
  367.     require_once('./libraries/relation.lib.php');
  368.     $cfgRelation = PMA_getRelationsParam();
  369. }
  370. if ($do_mime) {
  371.     require_once('./libraries/transformations.lib.php');
  372. }
  373.  
  374. // Include dates in export?
  375. $do_dates   = isset($GLOBALS[$what . '_dates']);
  376.  
  377. /**
  378.  * Builds the dump
  379.  */
  380. // Gets the number of tables if a dump of a database has been required
  381. if ($export_type == 'server') {
  382.     /**
  383.      * Gets the databases list - if it has not been built yet
  384.      */
  385.     if ($server > 0 && empty($dblist)) {
  386.         PMA_availableDatabases();
  387.     }
  388.  
  389.     if (isset($db_select)) {
  390.         $tmp_select = implode($db_select, '|');
  391.         $tmp_select = '|' . $tmp_select . '|';
  392.     }
  393.     // Walk over databases
  394.     foreach ($dblist AS $current_db) {
  395.         if ((isset($tmp_select) && strpos(' ' . $tmp_select, '|' . $current_db . '|'))
  396.             || !isset($tmp_select)) {
  397.             if (!PMA_exportDBHeader($current_db))
  398.                 break 2;
  399.             if (!PMA_exportDBCreate($current_db))
  400.                 break 2;
  401.             $tables = PMA_DBI_get_tables($current_db);
  402.             foreach ($tables as $table) {
  403.                 $local_query  = 'SELECT * FROM ' . PMA_backquote($current_db) . '.' . PMA_backquote($table);
  404.                 if (isset($GLOBALS[$what . '_structure'])) {
  405.                     if (!PMA_exportStructure($current_db, $table, $crlf, $err_url, $do_relation, $do_comments, $do_mime, $do_dates))
  406.                         break 3;
  407.                 }
  408.                 if (isset($GLOBALS[$what . '_data'])) {
  409.                     if (!PMA_exportData($current_db, $table, $crlf, $err_url, $local_query))
  410.                         break 3;
  411.                 }
  412.             }
  413.             if (!PMA_exportDBFooter($current_db))
  414.                 break 2;
  415.         }
  416.     }
  417. } elseif ($export_type == 'database') {
  418.     if (!PMA_exportDBHeader($db))
  419.         break;
  420.  
  421.     if (isset($table_select)) {
  422.         $tmp_select = implode($table_select, '|');
  423.         $tmp_select = '|' . $tmp_select . '|';
  424.     }
  425.     $i = 0;
  426.     foreach ($tables as $table) {
  427.         $local_query  = 'SELECT * FROM ' . PMA_backquote($db) . '.' . PMA_backquote($table);
  428.         if ((isset($tmp_select) && strpos(' ' . $tmp_select, '|' . $table . '|'))
  429.             || !isset($tmp_select)) {
  430.  
  431.             if (isset($GLOBALS[$what . '_structure'])) {
  432.                 if (!PMA_exportStructure($db, $table, $crlf, $err_url, $do_relation, $do_comments, $do_mime, $do_dates))
  433.                     break 2;
  434.             }
  435.             if (isset($GLOBALS[$what . '_data'])) {
  436.                 if (!PMA_exportData($db, $table, $crlf, $err_url, $local_query))
  437.                     break 2;
  438.             }
  439.         }
  440.     }
  441.     if (!PMA_exportDBFooter($db))
  442.         break;
  443. } else {
  444.     if (!PMA_exportDBHeader($db))
  445.         break;
  446.     // We export just one table
  447.  
  448.     if ($limit_to > 0 && $limit_from >= 0) {
  449.         $add_query  = ' LIMIT '
  450.                     . (($limit_from > 0) ? $limit_from . ', ' : '')
  451.                     . $limit_to;
  452.     } else {
  453.         $add_query  = '';
  454.     }
  455.  
  456.     if (!empty($sql_query)) {
  457.         $local_query = $sql_query . $add_query;
  458.         PMA_DBI_select_db($db);
  459.     } else {
  460.         $local_query  = 'SELECT * FROM ' . PMA_backquote($db) . '.' . PMA_backquote($table) . $add_query;
  461.     }
  462.  
  463.     if (isset($GLOBALS[$what . '_structure'])) {
  464.         if (!PMA_exportStructure($db, $table, $crlf, $err_url, $do_relation, $do_comments, $do_mime, $do_dates))
  465.             break;
  466.     }
  467.     if (isset($GLOBALS[$what . '_data'])) {
  468.         if (!PMA_exportData($db, $table, $crlf, $err_url, $local_query))
  469.             break;
  470.     }
  471.     if (!PMA_exportDBFooter($db))
  472.         break;
  473. }
  474. if (!PMA_exportFooter()) break;
  475.  
  476. } while (FALSE);
  477. // End of fake loop
  478.  
  479. if ($save_on_server && isset($message)) {
  480.     $js_to_run = 'functions.js';
  481.     require_once('./header.inc.php');
  482.     if ($export_type == 'server') {
  483.         $active_page = 'server_export.php';
  484.         require('./server_export.php');
  485.     } elseif ($export_type == 'database') {
  486.         $active_page = 'db_details_export.php';
  487.         require('./db_details_export.php');
  488.     } else {
  489.         $active_page = 'tbl_properties_export.php';
  490.         require('./tbl_properties_export.php');
  491.     }
  492.     exit();
  493. }
  494.  
  495. /**
  496.  * Send the dump as a file...
  497.  */
  498. if (!empty($asfile)) {
  499.     // Convert the charset if required.
  500.     if ($output_charset_conversion) {
  501.         $dump_buffer = PMA_convert_string($GLOBALS['charset'], $GLOBALS['charset_of_file'], $dump_buffer);
  502.     }
  503.  
  504.     // Do the compression
  505.     // 1. as a gzipped file
  506.     if (isset($compression) && $compression == 'zip') {
  507.         if (@function_exists('gzcompress')) {
  508.             $zipfile = new zipfile();
  509.             $zipfile -> addFile($dump_buffer, substr($filename, 0, -4));
  510.             $dump_buffer = $zipfile -> file();
  511.         }
  512.     }
  513.     // 2. as a bzipped file
  514.     else if (isset($compression) && $compression == 'bzip') {
  515.         if (@function_exists('bzcompress')) {
  516.             $dump_buffer = bzcompress($dump_buffer);
  517.             if ($dump_buffer === -8) {
  518.                 require_once('./header.inc.php');
  519.                 echo sprintf($strBzError, '<a href="http://bugs.php.net/bug.php?id=17300" target="_blank">17300</a>');
  520.                 require_once('./footer.inc.php');
  521.             }
  522.         }
  523.     }
  524.     // 3. as a gzipped file
  525.     else if (isset($compression) && $compression == 'gzip') {
  526.         if (@function_exists('gzencode')) {
  527.             // without the optional parameter level because it bug
  528.             $dump_buffer = gzencode($dump_buffer);
  529.         }
  530.     }
  531.  
  532.     /* If ve saved on server, we have to close file now */
  533.     if ($save_on_server) {
  534.         $write_result = @fwrite($file_handle, $dump_buffer);
  535.         fclose($file_handle);
  536.         if (strlen($dump_buffer) !=0 && (!$write_result || ($write_result != strlen($dump_buffer)))) {
  537.             $message = sprintf($strNoSpace, htmlspecialchars($save_filename));
  538.         } else {
  539.             $message = sprintf($strDumpSaved, htmlspecialchars($save_filename));
  540.         }
  541.  
  542.         $js_to_run = 'functions.js';
  543.         require_once('./header.inc.php');
  544.         if ($export_type == 'server') {
  545.             $active_page = 'server_export.php';
  546.             require_once('./server_export.php');
  547.         } elseif ($export_type == 'database') {
  548.             $active_page = 'db_details_export.php';
  549.             require_once('./db_details_export.php');
  550.         } else {
  551.             $active_page = 'tbl_properties_export.php';
  552.             require_once('./tbl_properties_export.php');
  553.         }
  554.         exit();
  555.     } else {
  556.         echo $dump_buffer;
  557.     }
  558. }
  559. /**
  560.  * Displays the dump...
  561.  */
  562. else {
  563.     /**
  564.      * Close the html tags and add the footers in dump is displayed on screen
  565.      */
  566.     //echo '    </pre>' . "\n";
  567.     echo '        </textarea>' . "\n"
  568.        . '    </form>' . "\n";
  569.     echo '</div>' . "\n";
  570.     echo "\n";
  571. ?><script language="JavaScript" type="text/javascript">
  572. <!--
  573.     var bodyWidth=null; var bodyHeight=null;
  574.     if (document.getElementById('textSQLDUMP')) {
  575.         bodyWidth  = self.innerWidth;
  576.         bodyHeight = self.innerHeight;
  577.         if(!bodyWidth && !bodyHeight){
  578.             if (document.compatMode && document.compatMode == "BackCompat") {
  579.                 bodyWidth  = document.body.clientWidth;
  580.                 bodyHeight = document.body.clientHeight;
  581.             } else if (document.compatMode && document.compatMode == "CSS1Compat") {
  582.                 bodyWidth  = document.documentElement.clientWidth;
  583.                 bodyHeight = document.documentElement.clientHeight;
  584.             }
  585.         }
  586.         document.getElementById('textSQLDUMP').style.width=(bodyWidth-50) + 'px';
  587.         document.getElementById('textSQLDUMP').style.height=(bodyHeight-100) + 'px';
  588.     }
  589. //-->
  590. </script>
  591. <?php
  592.     require_once('./footer.inc.php');
  593. } // end if
  594. ?>
  595.